var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
const { userRouter } = require("./routes/userRouter")
const { cartRouter } = require("./routes/cartRouter")
const jwt = require("jwt-simple");
const md5 = require("md5");




var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
//把前面的今天页面+jq的效果 当前项目的静态资源
app.use(express.static("../src"));



var list = ['/user/login', '/user/reg', '/cart/getgoods', '/cart/getGoodsById'];

app.all("*", function(req, res, next) {
    if (list.some(item => req.url.startsWith(item))) {
        next(); // 放行
    } else {

        try {
            //是否带了token
            var token;
            if (req.headers["authorization"]) {
                token = req.headers["authorization"].split(' ')[1];
            } else {
                token = req.query.token || req.body.token || req.headers.token || req.cookies.token;
            }
            console.log(token);
            jwt.decode(token, md5("cs2201"));
            next()
        } catch (error) {
            res.json({ msg: "您的token已失效,请重新登录!", error })
        }
    }
})

//配置路由
app.use("/user", userRouter)
app.use("/cart", cartRouter)

// catch 404 and forward to error handler
app.use(function(req, res, next) {
    next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
    // set locals, only providing error in development
    res.locals.message = err.message;
    res.locals.error = req.app.get('env') === 'development' ? err : {};

    // render the error page
    res.status(err.status || 500);
    res.render('error');
});

module.exports = app;